4
How can I fit or ensure that all elements are in the control's client area
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oElements
	LOCAL oSwimLane

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
	oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
	oSwimLane:create(,, {10,60},{610,370} )

		oElements := oSwimLane:Elements()
			oElements:Add("Element A",-500,-500):SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,255,0 } )  , .F. ))
			oElements:Add("Element B",500,500):SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oElements:Add("Element C",48,24)
		oSwimLane:FitToClient()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
3
Context Menu - Microsoft Windows 8.1 - Ribbon Like

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oSwimLane

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
	oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
	oSwimLane:create(,, {10,60},{610,370} )

		oSwimLane:BeginUpdate()
		oAppearance := oSwimLane:VisualAppearance()
			oAppearance:Add(1,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSFlat-Ribbon/msfr_background.ebn")
			oAppearance:Add(2,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSFlat-Ribbon/msfr_groupt.ebn")
			oAppearance:Add(12,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSFlat-Ribbon/msfr_hot.ebn")
			oAppearance:Add(14,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSFlat-Ribbon/msfr_select.ebn")
			oAppearance:Add(17,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSFlat-Ribbon/msfr_tab.ebn")
			oAppearance:Add(18,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSFlat-Ribbon/msfr_tabhot.ebn")
			oAppearance:Add(30,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSFlat-Ribbon/msfr_radio0.ebn")
			oAppearance:Add(31,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSFlat-Ribbon/msfr_radio1.ebn")
			oAppearance:Add(32,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSFlat-Ribbon/msfr_check0.ebn")
			oAppearance:Add(33,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSFlat-Ribbon/msfr_check1.ebn")
			oAppearance:Add(34,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSFlat-Ribbon/msfr_buttonu.ebn")
			oAppearance:Add(35,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSFlat-Ribbon/msfr_buttond.ebn")
		oSwimLane:SetProperty("Background",99/*exContextMenuAppearance*/,0x1000000)
		oSwimLane:SetProperty("Background",64/*exToolTipAppearance*/,0x1fefefe)
		oSwimLane:SetProperty("Background",102/*exContextMenuSelBackColor*/,0xe000000)
		oSwimLane:SetProperty("Background",148/*exToolBarAppearance*/,0x1000000)
		oSwimLane:SetProperty("Background",149/*exToolBarBackColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oSwimLane:SetProperty("Background",155/*exToolBarButtonHotBackColor*/,0xc000000)
		oSwimLane:SetProperty("Background",153/*exToolBarButtonDownBackColor*/,0xe000000)
		oSwimLane:SetProperty("Background",110/*exContextMenuHotBackColor*/,0xc000000)
		oSwimLane:SetProperty("Background",112/*exContextMenuSelHotBackColor*/,0x23000000)
		oSwimLane:SetProperty("Background",2/*0x2+*/,0x22000000)
		oSwimLane:SetProperty("Background",3/*0x3+*/,0x23000000)
		oSwimLane:SetProperty("Background",70/*exCheckBoxState0*/,0x20000000)
		oSwimLane:SetProperty("Background",71/*exCheckBoxState1*/,0x21000000)
		oSwimLane:SetProperty("Background",73/*exRadioButtonState0*/,0x1e000000)
		oSwimLane:SetProperty("Background",74/*exRadioButtonState1*/,0x1f000000)
		oSwimLane:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2
Context Menu - Microsoft Paint - Ribbon Like

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oSwimLane

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
	oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
	oSwimLane:create(,, {10,60},{610,370} )

		oSwimLane:BeginUpdate()
		oAppearance := oSwimLane:VisualAppearance()
			oAppearance:Add(1,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSPaint-Ribbon/mspr_background.ebn")
			oAppearance:Add(2,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSPaint-Ribbon/mspr_groupt.ebn")
			oAppearance:Add(3,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSPaint-Ribbon/mspr_groupo.ebn")
			oAppearance:Add(4,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSPaint-Ribbon/mspr_grouphot.ebn")
			oAppearance:Add(5,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSPaint-Ribbon/mspr_frameh.ebn")
			oAppearance:Add(6,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSPaint-Ribbon/mspr_framehs.ebn")
			oAppearance:Add(7,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSPaint-Ribbon/mspr_framehi.ebn")
			oAppearance:Add(8,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSPaint-Ribbon/mspr_framehe.ebn")
			oAppearance:Add(9,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSPaint-Ribbon/mspr_framevs.ebn")
			oAppearance:Add(10,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSPaint-Ribbon/mspr_framevi.ebn")
			oAppearance:Add(11,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSPaint-Ribbon/mspr_frameve.ebn")
			oAppearance:Add(12,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSPaint-Ribbon/mspr_select.ebn")
			oAppearance:Add(13,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSPaint-Ribbon/mspr_bordert.ebn")
			oAppearance:Add(14,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSPaint-Ribbon/mspr_buttond.ebn")
			oAppearance:Add(15,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSPaint-Ribbon/mspr_buttonu.ebn")
			oAppearance:Add(16,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSPaint-Ribbon/mspr_tab.ebn")
			oAppearance:Add(17,"CP:16 0 0 0 1")
			oAppearance:Add(18,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSPaint-Ribbon/mspr_tabhot.ebn")
			oAppearance:Add(19,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSPaint-Ribbon/mspr_tabselhot.ebn")
			oAppearance:Add(20,"CP:19 0 0 0 1")
		oSwimLane:SetProperty("Background",99/*exContextMenuAppearance*/,0x1000000)
		oSwimLane:SetProperty("Background",101/*exContextMenuForeColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 21,66,139 } )  , .F. ))
		oSwimLane:SetProperty("Background",102/*exContextMenuSelBackColor*/,0xe000000)
		oSwimLane:SetProperty("Background",64/*exToolTipAppearance*/,0x1fefefe)
		oSwimLane:SetProperty("Background",148/*exToolBarAppearance*/,0x1000000)
		oSwimLane:SetProperty("Background",149/*exToolBarBackColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oSwimLane:SetProperty("Background",155/*exToolBarButtonHotBackColor*/,0xd000000)
		oSwimLane:SetProperty("Background",153/*exToolBarButtonDownBackColor*/,0x1000000)
		oSwimLane:SetProperty("Background",2/*0x2+*/,0xd000000)
		oSwimLane:SetProperty("Background",105/*exContextMenuGroupPopupFrameSingle*/,0x5000000)
		oSwimLane:SetProperty("Background",106/*exContextMenuGroupPopupFrameHStart*/,0x6000000)
		oSwimLane:SetProperty("Background",107/*exContextMenuGroupPopupFrameHIntermediate*/,0x7000000)
		oSwimLane:SetProperty("Background",108/*exContextMenuGroupPopupFrameHEnd*/,0x8000000)
		oSwimLane:SetProperty("Background",116/*exContextMenuGroupPopupFrameVStart*/,0x9000000)
		oSwimLane:SetProperty("Background",117/*exContextMenuGroupPopupFrameVIntermediate*/,0xa000000)
		oSwimLane:SetProperty("Background",118/*exContextMenuGroupPopupFrameVEnd*/,0xb000000)
		oSwimLane:SetProperty("Background",110/*exContextMenuHotBackColor*/,0xc000000)
		oSwimLane:SetProperty("Background",112/*exContextMenuSelHotBackColor*/,0xf000000)
		oSwimLane:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1
Context Menu - Microsoft Office - Ribbon Like

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oSwimLane

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
	oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
	oSwimLane:create(,, {10,60},{610,370} )

		oSwimLane:BeginUpdate()
		oAppearance := oSwimLane:VisualAppearance()
			oAppearance:Add(1,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSOffice-Ribbon/msor_background.ebn")
			oAppearance:Add(2,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSOffice-Ribbon/msor_groupt.ebn")
			oAppearance:Add(3,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSOffice-Ribbon/msor_groupo.ebn")
			oAppearance:Add(4,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSOffice-Ribbon/msor_grouphot.ebn")
			oAppearance:Add(5,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSOffice-Ribbon/msor_frameh.ebn")
			oAppearance:Add(6,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSOffice-Ribbon/msor_framehs.ebn")
			oAppearance:Add(7,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSOffice-Ribbon/msor_framehi.ebn")
			oAppearance:Add(8,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSOffice-Ribbon/msor_framehe.ebn")
			oAppearance:Add(9,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSOffice-Ribbon/msor_framevs.ebn")
			oAppearance:Add(10,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSOffice-Ribbon/msor_framevi.ebn")
			oAppearance:Add(11,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSOffice-Ribbon/msor_frameve.ebn")
			oAppearance:Add(12,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSOffice-Ribbon/msor_select.ebn")
			oAppearance:Add(13,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSOffice-Ribbon/msor_bordert.ebn")
			oAppearance:Add(14,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSOffice-Ribbon/msor_buttond.ebn")
			oAppearance:Add(15,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSOffice-Ribbon/msor_buttonu.ebn")
			oAppearance:Add(16,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSOffice-Ribbon/msor_tab.ebn")
			oAppearance:Add(17,"CP:16 0 0 0 1")
			oAppearance:Add(18,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSOffice-Ribbon/msor_tabhot.ebn")
			oAppearance:Add(19,"C:/Program Files/Exontrol/ExSwimLane/Sample/EBN/MSOffice-Ribbon/msor_tabselhot.ebn")
			oAppearance:Add(20,"CP:19 0 0 0 1")
		oSwimLane:SetProperty("Background",99/*exContextMenuAppearance*/,0x1000000)
		oSwimLane:SetProperty("Background",101/*exContextMenuForeColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 21,66,139 } )  , .F. ))
		oSwimLane:SetProperty("Background",64/*exToolTipAppearance*/,0x1fefefe)
		oSwimLane:SetProperty("Background",148/*exToolBarAppearance*/,0x1000000)
		oSwimLane:SetProperty("Background",149/*exToolBarBackColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oSwimLane:SetProperty("Background",155/*exToolBarButtonHotBackColor*/,0xd000000)
		oSwimLane:SetProperty("Background",153/*exToolBarButtonDownBackColor*/,0x1000000)
		oSwimLane:SetProperty("Background",2/*0x2+*/,0xd000000)
		oSwimLane:SetProperty("Background",3/*0x3+*/,0x1000000)
		oSwimLane:SetProperty("Background",105/*exContextMenuGroupPopupFrameSingle*/,0x5000000)
		oSwimLane:SetProperty("Background",106/*exContextMenuGroupPopupFrameHStart*/,0x6000000)
		oSwimLane:SetProperty("Background",107/*exContextMenuGroupPopupFrameHIntermediate*/,0x7000000)
		oSwimLane:SetProperty("Background",108/*exContextMenuGroupPopupFrameHEnd*/,0x8000000)
		oSwimLane:SetProperty("Background",116/*exContextMenuGroupPopupFrameVStart*/,0x9000000)
		oSwimLane:SetProperty("Background",117/*exContextMenuGroupPopupFrameVIntermediate*/,0xa000000)
		oSwimLane:SetProperty("Background",118/*exContextMenuGroupPopupFrameVEnd*/,0xb000000)
		oSwimLane:SetProperty("Background",110/*exContextMenuHotBackColor*/,0xc000000)
		oSwimLane:SetProperty("Background",102/*exContextMenuSelBackColor*/,0xe000000)
		oSwimLane:SetProperty("Background",112/*exContextMenuSelHotBackColor*/,0xf000000)
		oSwimLane:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN